home *** CD-ROM | disk | FTP | other *** search
- /* TCHK 2.0 - Howard Kapustein's Turbo C library 12-3-88 */
- /* Copyright (C) 1988, Howard Kapustein. All rights reserved. */
-
- /* ibm.h - header file for IBM.C - IBM specific functions */
-
- #ifndef IBM_HEADER
- #define IBM_HEADER 1
-
- #include <howard.h>
-
- #ifndef IBM_HEX_ID
- #define PC 0xFF
- #define XT 0xFE
- #define Portable_PC 0xFE
- #define PCjr 0xFD
- #define AT 0xFC
- #define AT3x9 0xFC
- #define XT286 0xFC
- #define PS2_Model_50 0xFC
- #define PS2_Model_60 0xFC
- #define XT2 0xFB
- #define PS2_Model_25 0xFA
- #define PS2_Model_30 0xFA
- #define PC_Convertible 0xF9
- #define PS2_Model_80 0xF8
- #define Compaq 0x2D
- #define Compaq_Plus 0x9A
- /* above are ROM_id bytes, below are machine_id codes */
- #define PC_id 1
- #define XT_id 2
- #define Portable_PC_id 3 /* can't currently be identified */
- #define PCjr_id 4
- #define AT_id 5
- #define AT3x9_id 6
- #define XT2_id 7
- #define XT286_id 8
- #define PC_Convertible_id 9
- #define PS2_Model_25_id 10 /* ?, see docs */
- #define PS2_Model_30_id 11
- #define PS2_Model_50_id 12
- #define PS2_Model_60_id 13
- #define PS2_Model_80_id 14
- #define Unknown_id 99
- #define IBM_HEX_ID 1
- #endif
-
- #ifndef MEM_STRATEGY
- #define MEM_STRAT_FIRST 0 /* use first mem block large enough */
- #define MEM_STRAT_BEST 1 /* use smallest mem block large enough */
- #define MEM_STRAT_LAST 2 /* use high part of last usable mem block */
- #define MEM_STRAT_BADDOS -1 /* using DOS earlier than 3.xx */
- #define MEM_STRATEGY 1
- #endif
-
- #ifndef DISK_ID_BYTE
- #define DISK_DSDD_8 0xFF /* Double-sided, 5 1/4" floppy, 8 sectors */
- #define DISK_SSDD_8 0xFE /* Single-sided, 5 1/4" floppy, 8 sectors */
- #define DISK_SS8_8 0xFE /* Single-sided, 8" floppy, 8 sectors */
- #define DISK_DSDD_9 0xFD /* Double-sided, 5 1/4" floppy, 9 sectors */
- #define DISK_SSDD_9 0xFC /* Single-sided floppy, 9 sectors */
- #define DISK_DSQD_15 0xF9 /* Double-sided, 5 1/4" floppy, 15 sectors */
- #define DISK_DS3_15 0xF9 /* Double-sided, 3 1/2" floppy, 9 sectors */
- #define DISK_HARD 0xF8 /* Hard disk */
- #define DISK_DS3_18 0xF0 /* Double-sided, 3 1/2" floppy, 18 sectors */
- #define DISK_UNDEFINED 0xF0 /* undefined media type */
- /* Note: if the disk is Single-sided, 8" 26 sectors,
- it could have the id FE or FD */
- #define DISK_INVALID 0x1 /* invalid disk specified */
- #define DISK_ID_BYTE 1
- #endif
-
- #ifndef EMS_CODES
- #define EMS_SUCCESS 0x00 /* success */
- #define EMS_ERROR_SOFTWARE 0x80 /* error in EMM software */
- #define EMS_ERROR_HARDWARE 0x81 /* malfunction in EM hardware */
- #define EMS_ERROR_UNDEFINED 0x84 /* function requested not defined */
- #define EMS_CODES 1
- #endif
-
- typedef struct EMSrecord {
- unsigned int handle;
- unsigned int totalpages;
- unsigned int availpages;
- byte version;
- byte emserror;
- };
-
- #ifndef IBM_DEFINES
- #define TIMER_TICKS *((long far *) 0x46Clu) /* Timer tick count */
- #define isBREAKon() (getcbrk()==1?TRUE:FALSE)
- #define setBREAK(b) setcbrk(b)
- #define isVERIFYon() (getverify()==1?TRUE:FALSE)
- #define setVERIFY(v) setverify(b)
- #define IBM_DEFINES
- #endif
-
- /* function prototypes */
- byte ROM_id(void); /* get ROM id */
- char *ROM_date(void); /* get ROM date */
- boolean isNetwork(void); /* is a Network installed */
- boolean isExtended(void); /* is Extended memory available */
- boolean iskey102(void); /* is keyboard 101/102 keys */
- int Extendedtotal(void); /* total amount of Extended memory (in K) */
- int machine_id(void); /* determine machine id */
- boolean isBlogical(void); /* is B: physical or logical */
-
- void beep(void); /* beep speaker */
- boolean diskchanged(int drive); /* disk change detected: AT, XT2, XT286, Convertible and PS/2 only */
- byte disktype(byte drive); /* type of disk (0=default, A=1, etc.) */
- boolean isgameport(void); /* is game port available */
- void reboot(boolean warmboot); /* reboot, warmboot vs. coldboot */
-
- boolean isEMSavail(void); /* is EMS available */
- byte getEMSstatus(void); /* get EMS status */
- boolean EMMversion(byte *version); /* version or (on failure) error code */
- boolean EMSpages(struct EMSrecord *ems); /* total/available amount of EMS */
- boolean EMSinfo(struct EMSrecord *ems); /* EMS version and total/available pages */
- int EMSwarmbootprep(void); /* Prep EMS hardware for warm boot: LIM EMS 4.0 */
-
- #endif /* IBM_HEADER */
-